doublefree
利用条件
1.fastbin 的堆块被释放后 next_chunk 的 pre_inuse 位不会被清空
2.fastbin 在执行 free 的时候仅验证了 main_arena 直接指向的块,即链表指针头部的块。对于链表后面的块,并没有进行验证。
该漏洞是指将同一个chunk free两次,通常情况下free两个chunk会报错是无法编译的,监测机制也很简单,就仅仅是对free变量与前一个进行对比,所以可以中间夹一个其他的实现:
1 | |
此时的 bins 中情况大概如下:0x20 —> shangu1 —> shangu2 —> shangu1
当再次申请堆时会出现 有两个指针指向同一个chunk
![联想截图_20230322221849.png](https://s2.loli.net/2023/09/12/BI6lRtbdPnKTuMN.png
- 标题: doublefree
- 作者: Kylinxin
- 创建于 : 2023-06-04 15:14:29
- 更新于 : 2023-06-04 15:14:29
- 链接: https://kylinxin.github.io/2023/06/04/double free/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。